package com.feicheng.controller;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.feicheng.base.common.DaoConstant;
import com.feicheng.base.exception.SystemException;
import com.feicheng.base.result.Result;
import com.feicheng.entity.Product;
import com.feicheng.service.IProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author jiwei.sun
 * @since 2022-07-04
 */
@RestController
@RequestMapping("/product")
public class ProductController {

    /* 注入商品service */
    @Autowired
    IProductService iProductService;

    /**
     * 新增销售订单商品类型下拉框
     * @param
     * @return
     * @autor jiwei.sun
     */
    @PostMapping("/sale_type/g")
    public Result selectType() {

        //构造商品条件查询构造器
        QueryWrapper<Product> productQueryWrapper = new QueryWrapper<>();

        //商品状态是在售商品
        productQueryWrapper.eq(DaoConstant.PRODUCT.STATE,
                DaoConstant.VALUE.Y);

        //查询所有商品类型
        List<Product> productList = iProductService.list(productQueryWrapper);

        //创建set集合
        Set<String> productSet = new HashSet<>();

        /* 当商品类型为空的时候 */
        if (null == productList && productList.size() < 0) {

            throw new SystemException("");
        }

        //循环遍历
        for (Product products : productList) {
            productSet.add(products.getType());
        }

        //返回查询结果
        return Result.success(productSet);
    }

    /**
     * 获取所有商品名称/商品描述下拉框
     * @param
     * @author xinyi.yang
     * @return
     */
    @PostMapping("/product_name")
    public Result getProductName(
            @RequestParam String type
    ) {
        //构造商品条件查询构造器
        QueryWrapper<Product> productQueryWrapper = new QueryWrapper<>();

        //查询在售状态的商品,查询相同type下的商品
        productQueryWrapper.eq(DaoConstant.PRODUCT.STATE,
                DaoConstant.VALUE.Y).eq(DaoConstant.PRODUCT.TYPE, type);

        //返回查询结果
       return Result.success(iProductService.list(productQueryWrapper));
    }


}
